﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Interfaces;
using Presentador;
using ReporteTrafico.App_Data;

namespace ReporteTrafico
{
    public partial class ConsultaUltimoReporteGenerado : Page, IConsultaUltimoReporte 
    {        
        //<summary>
        // Objeto del tipo PresentadorConsultaUltimoReporteGenerado
        //</summary> 

        PresentadorConsultaUltimoReporte ultimoReporte;

        //<summary>
        // Constructor
        //</summary> 
        public ConsultaUltimoReporteGenerado()
        {
            ultimoReporte = new PresentadorConsultaUltimoReporte(this);
        }

        // ESTO ES PARA QUE CADA VEZ QUE SE CARGE LA PÁGINA SE VALIDE SI HAY UN USUARIO LOGUEADO O NO...
        // REVISAR CORREO...
        protected void Page_Load(object sender, EventArgs e)
        {

            ////Response.Cache.SetCacheability(HttpCacheability.NoCache);

            if (!IsPostBack)
            {
                ultimoReporte.ImprimeListaUbicacion();

                object usuarioLogueado = Session[Recursos.SesionUsuario];
                object idUsuarioLogueado = Session[Recursos.SesionIdUsuario];

                if (usuarioLogueado != null)
                {
                    HyperLinkCerrarSesion.Visible = true;

                    string login = Convert.ToString(usuarioLogueado);
                    infoUsuario = Recursos.Saludo + login.ToUpper() + Recursos.puntuacion;

                    infoIdUsuario = Convert.ToString(idUsuarioLogueado);

                }
                else
                {
                    infoUsuario = Recursos.Saludo + Recursos.UsuarioInvitado + Recursos.puntuacion;
                }
            }
        }

        #region Encapsulamiento de Componentes
        public DropDownList Ubicacion
        {
            get { return DropDownListUbicacion; }
            set { DropDownListUbicacion = value; }
        }

        public DropDownList Sentido
        {
            get { return DropDownListSentido; }
            set { DropDownListSentido = value; }
        }

        public String infoUsuario
        {
            get { return LabelUsuario.Text; }
            set { LabelUsuario.Text = value; }
        }

        public String infoIdUsuario
        {
            get { return LabelIdUsuario.Text; }
            set { LabelIdUsuario.Text = value; }
        }

        public String idUbicacion
        {
            get { return DropDownListUbicacion.ID.ToString(); }
            set { value = DropDownListUbicacion.ID.ToString(); }
        }

        public String idSentido
        {
            get { return DropDownListSentido.ID.ToString(); }
            set { value = DropDownListSentido.ID.ToString(); }
        }

        public DetailsView UltimoReporteGenerado
        {
            get { return DetailsViewUltimoReporteGenerado; }
            set { value = DetailsViewUltimoReporteGenerado; }
        }    
        #endregion

        //<summary>
        // Método que imprime las opciones de Sentido del Tráfico una vez seleccionada 
        //la ubicación.
        //</summary> 
        protected void GeneraSentido(object sender, System.EventArgs e)
        {
            ultimoReporte.ImprimeSentido();
        }

        //<summary>
        // Método del botón que ejecuta la consulta del último reporte generado según la 
        //ubicación y el sentido seleccionado
        //</summary> 
        protected void Button_ConsultarUltimoReporte(object sender, EventArgs e)
        {
            UltimoReporteGenerado.Visible = true;
            imagenTrafico.Visible = true;
            imagenTrafico.ImageUrl = ultimoReporte.ConsultaImagenReporte();
        }
    }
}
